import%20marimo%0A%0A__generated_with%20%3D%20%220.16.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(jsbsim737_kCDge_data%2C%20jsbsim737_kCLge_data%2C%20mo%2C%20plot_generic_xy)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%20Ground%20Effect%20Models%0A%0A%20%20%20%20In%20the%20%5BLanding%20-%20Ground%20Effect%2C%20Flare%20-%20JSBSim%5D(https%3A%2F%2Fseanmcleod70.github.io%2F2018%2F02%2Flanding-ground-effect-flare-jsbsim%2F)%0A%20%20%20%20writeup%20the%20influence%20of%20ground%20effect%20was%20analyzed%20using%20the%20737%20aircraft%20model%20from%20the%20JSBSim%20repo%20during%20landing.%0A%0A%20%20%20%20The%20JSBSim%20737%20model%20includes%20a%20scale%20factor%20for%20lift%20and%20drag%20based%20on%20%24h%2Fb%24%20(height%2Fwingspan)%20to%20model%20ground%20%0A%20%20%20%20effect.%20There%20is%20no%20ground%20effect%20modelling%20for%20the%20change%20in%20the%20pitch%20moment.%20The%20%24C_L%24%20and%20%24C_D%24%20ground%20effect%20scale%20factor%20is%20independent%20of%20flap%20configuration%20and%20also%20independent%20of%20angle%20of%20attack%20(%24%5Calpha%24).%20%0A%0A%20%20%20%20%7Bplot_generic_xy(jsbsim737_kCLge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCLge_data%5B%3A%2C1%5D%2C%20'JSBSim%20737%20%24kC_%7BL_%7Bge%7D%7D%24'%2C%20'%24h%2Fb%24'%2C%20'%24kC_%7BL_%7Bge%7D%7D%24')%7D%0A%0A%20%20%20%20%7Bplot_generic_xy(jsbsim737_kCDge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCDge_data%5B%3A%2C1%5D%2C%20'JSBSim%20737%20%24kC_%7BD_%7Bge%7D%7D%24'%2C%20'%24h%2Fb%24'%2C%20'%24kC_%7BD_%7Bge%7D%7D%24')%7D%0A%0A%20%20%20%20In%20this%20write%20up%20we'll%20take%20a%20look%20at%20how%20the%20ground%20effect%20is%20modelled%20by%20Boeing%20for%20a%20B747-100%20simulator%20and%20%0A%20%20%20%20also%20by%20Airbus%20for%20a%20generic%20civil%20transport%20aircraft%20and%20then%20compare%20the%20three%20ground%20effect%20models.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20NASA%2FBoeing%20747-100%20Simulator%20Model%0A%0A%20%20%20%20Boeing%20were%20contracted%20by%20NASA%20in%201970%20to%20provide%20NASA-Ames%20Research%20Center%20with%20mathematical%20models%20and%20data%20to%20simulate%20the%20flying%20qualities%20and%20characteristics%20of%20the%20Boeing%20747%20on%20the%20NASA%20Flight%20Simulator%20for%20Advanced%20Aircraft%20(FSAA).%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20%24%5CDelta%20C_%7BL_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EB_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7BL_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20lift%20due%20to%20ground%20effect%20is%20modelled%20as%20an%20increment%20in%20the%20lift%20coefficient%20based%20on%20a%20scaling%0A%20%20%20%20factor%20%24K%5EB_%7BGE%7D%24%20which%20varies%20between%200%20and%201%20depending%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7BL_%7BGE%7D%7D%24%0A%20%20%20%20factor%20is%20defined%20as%20an%20increment%20in%20%24C_L%24%20based%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_L%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_L%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCLBasic.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EB_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKBGE.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7BL_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCLGE.png%22%2C%20width%3D600)%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CL_groundeffect%2C%0A%20%20%20%20plot_CL_groundeffect_AOA%2C%0A%20%20%20%20plot_K_B_GE%2C%0A%20%20%20%20plot_basic_CL%2C%0A%20%20%20%20plot_delta_CL%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%5BEngauge%20Digitizer%5D(https%3A%2F%2Fengauge-digitizer.software.informer.com%2F)%20was%20used%20to%20digitize%20the%20plots%20from%20the%20NASA%20report.%0A%0A%20%20%20%20The%20take-off%20flap%20settings%20for%20the%20747%20are%20flaps%2010%20or%20flaps%2020%20and%20the%20landing%20flap%20options%20are%20flaps%2025%20or%20flaps%2030.%0A%0A%20%20%20%20%7Bplot_basic_CL()%7D%0A%0A%20%20%20%20%7Bplot_K_B_GE()%7D%0A%0A%20%20%20%20%7Bplot_delta_CL()%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EB_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7BL_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20increase%20in%20%0A%20%20%20%20the%20%24C_L%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20vs%20AoA'%2C%20'%24C_L%24'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20vs%20AoA'%2C%20'%24C_L%24'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_L%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CL_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_L%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Drag%0A%0A%20%20%20%20%24%5CDelta%20C_%7BD_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EA_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7BD_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20drag%20due%20to%20ground%20effect%20takes%20the%20same%20form%20as%20the%20change%20in%20lift%20due%20to%20ground%20effect%2C%20i.e.%20%0A%20%20%20%20a%20change%20in%20the%20drag%20coefficient%20based%20on%20a%20scaling%20factor%20%24K%5EA_%7BGE%7D%24%20which%20varies%20between%200%20and%201%20depending%0A%20%20%20%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7BD_%7BGE%7D%7D%24%20factor%20is%20defined%20as%20a%20decrement%20in%20%24C_D%24%20based%0A%20%20%20%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%20Note%20that%20the%20scaling%20factor%20%24K%5EA_%7BGE%7D%24%20for%20drag%20is%20different%0A%20%20%20%20to%20the%20one%20used%20for%20lift%2C%20%24K%5EB_%7BGE%7D%24.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_D%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_D%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCDBasic.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EA_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKAGE.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7BD_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCDGE.png%22%2C%20width%3D600)%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CD_groundeffect%2C%0A%20%20%20%20plot_CD_groundeffect_AOA%2C%0A%20%20%20%20plot_K_A_GE%2C%0A%20%20%20%20plot_basic_CD%2C%0A%20%20%20%20plot_delta_CD%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Digitized%20plots.%0A%0A%20%20%20%20%7Bplot_basic_CD()%7D%0A%0A%20%20%20%20%7Bplot_K_A_GE()%7D%0A%0A%20%20%20%20%7Bplot_delta_CD()%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EA_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7BD_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20decrease%20in%20%0A%20%20%20%20the%20%24C_D%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20vs%20AoA'%2C%20'%24C_D%24'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20vs%20AoA'%2C%20'%24C_D%24'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_D%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CD_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_D%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Pitching%20Moment%0A%0A%20%20%20%20%24%5CDelta%20C_%7Bm_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EB_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20pitching%20moment%20due%20to%20ground%20effect%20takes%20the%20same%20form%20as%20the%20change%20in%20lift%20and%20drag%20due%20to%20%0A%20%20%20%20ground%20effect%2C%20i.e.%20a%20change%20in%20the%20pitching%20moment%20coefficient%20based%20on%20a%20scaling%20factor%20%24K%5EB_%7BGE%7D%24%20which%20varies%20%0A%20%20%20%20between%200%20and%201%20depending%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20factor%20is%20defined%20as%20a%20%0A%20%20%20%20delta%20in%20%24C_m%24%20based%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%20Note%20that%20the%20scaling%20factor%20%24K%5EB_%7BGE%7D%24%20%0A%20%20%20%20used%20for%20the%20pitching%20moment%20is%20the%20same%20one%20as%20used%20for%20lift.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_m%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_m%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCMBasic1.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCMBasic2.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EB_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%20Same%20one%20used%20for%20lift.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKBGE.png%22%2C%20width%3D600)%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7Bm_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCMGE.png%22%2C%20width%3D600)%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CM_groundeffect%2C%0A%20%20%20%20plot_CM_groundeffect_AOA%2C%0A%20%20%20%20plot_K_B_GE%2C%0A%20%20%20%20plot_basic_CM%2C%0A%20%20%20%20plot_delta_CM%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Digitized%20plots.%0A%0A%20%20%20%20%7Bplot_basic_CM()%7D%0A%0A%20%20%20%20%7Bplot_K_B_GE()%7D%0A%0A%20%20%20%20%7Bplot_delta_CM()%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EB_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7Bm_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20change%20in%20%0A%20%20%20%20the%20%24C_m%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20vs%20AoA'%2C%20'%24C_m%24'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20vs%20AoA'%2C%20'%24C_m%24'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_m%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CM_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_m%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20Airbus%20Generic%20Civil%20Transport%0A%0A%20%20%20%20In%202016%20ONERA%20and%20Airbus%20proposed%20%5BA%20Civilian%20Aircraft%20Landing%20Challenge%5D(https%3A%2F%2Fw3.onera.fr%2Fsmac%2Fsites%2Fdefault%2Ffiles%2F2024-01%2FCALC_v2.pdf)%3A%0A%0A%20%20%20%20%3E%20the%20final%20approach%20and%20landing%20phases%20still%20remain%20critical%20in%20poor%20visibility%20and%20strong%20wind%20conditions.%20Based%20on%20a%20realistic%20nonlinear%20model%20of%20a%20civil%20transport%20aircraft%20in%20full%20configuration%2C%20the%20objective%20of%20the%20proposed%20challenge%20is%20to%20design%20an%20autopilot%20system%20to%20enable%20a%20correct%20landing%20despite%20parametric%20variations%20and%20**maximized%20cross%20wind**%20conditions.%0A%0A%20%20%20%20Included%20in%20the%20model%20is%20a%20ground%20effect%20model%2C%20modelling%20the%20change%20in%20%24C_L%24%20and%20%24C_m%24%2C%20but%20no%20modelling%20of%20the%20change%0A%20%20%20%20in%20%24C_D%24.%0A%0A%20%20%20%20The%20model%20is%20for%20a%20single%20'full%20configuration'%20for%20landing%2C%20so%20unlike%20the%20747%20model%20there%20isn't%20data%20for%20different%0A%20%20%20%20flap%20configurations.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20%24%5CDelta%20C_%7BL_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20C_%7BL_%7BH%7D%7D%20e%5E%7B-%20%5Clambda_L%20H_%7BLG%7D%7D%24%0A%0A%20%20%20%20%24C_%7BL_%7BH%7D%7D%20%3D%200.20%24%20%0A%0A%20%20%20%20%24%5Clambda_L%20%3D%200.12%24%0A%0A%20%20%20%20%24H_%7BLG%7D%24%20-%20Landing%20gear%20height%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20plot_airbus_delta_CL)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Assuming%20a%20wingspan%20of%20%24b%20%3D%2060.3m%24%20based%20on%20an%20A330.%0A%0A%20%20%20%20%7Bplot_airbus_delta_CL()%7D%0A%0A%20%20%20%20The%20lift%20is%20modelled%20only%20over%20the%20linear%20portion%20of%20the%20%24C_L%24%20versus%20%24%5Calpha%24%20curve%20with%3A%0A%0A%20%20%20%20%24C_%7B%7BL_%7B%7B0%7D%7D%7D%7D%20%3D%200.90%24%0A%0A%20%20%20%20%24C_%7B%7BL_%7B%7B%5Calpha%7D%7D%7D%7D%20%3D%205.5%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_airbus_lift_plus_delta_ge%2C%0A%20%20%20%20plot_airbus_lift_scaling%2C%0A%20%20%20%20plot_airbus_lift_scaling_vs_hb%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%7Bplot_airbus_lift_plus_delta_ge()%7D%0A%0A%20%20%20%20%7Bplot_airbus_lift_scaling()%7D%0A%0A%20%20%20%20%7Bplot_airbus_lift_scaling_vs_hb()%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Pitching%20Moment%0A%0A%20%20%20%20%24%5CDelta%20C_%7Bm_%7BGroundEffect%7D%7D%20%3D%20(C_%7Bm_%7BH_%7B0%7D%7D%7D%20%2B%20C_%7Bm_%7BH_%7B%5Calpha%7D%7D%7D%20%5Calpha)%20e%5E%7B-%20%5Clambda_m%20H_%7BLG%7D%7D%24%0A%0A%20%20%20%20%24C_%7Bm_%7BH_%7B0%7D%7D%7D%20%3D%20-0.09%24%0A%0A%20%20%20%20%24C_%7Bm_%7BH_%7B%5Calpha%7D%7D%7D%20%3D%20-0.9%24%0A%0A%20%20%20%20%24%5Clambda_m%20%3D%200.15%24%0A%0A%20%20%20%20%24H_%7BLG%7D%24%20-%20Landing%20gear%20height%0A%0A%20%20%20%20The%20basic%20pitch%20moment%20is%20modelled%20by%3A%0A%0A%20%20%20%20%24C_m%20%3D%20C_%7Bm_%7B0%7D%7D%20%2B%20C_%7Bm_%7B%5Calpha%7D%7D%20%5Calpha%24%0A%0A%20%20%20%20%24C_%7Bm_%7B0%7D%7D%20%3D%20-0.3%24%0A%0A%20%20%20%20%24C_%7Bm_%7B%5Calpha%7D%7D%20%3D%20-1.5%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_airbus_basic_cm%2C%0A%20%20%20%20plot_airbus_delta_Cm%2C%0A%20%20%20%20plot_airbus_delta_Cm_alpha%2C%0A%20%20%20%20plot_airbus_net_Cm%2C%0A%20%20%20%20plot_airbus_net_Cm_scaling%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%7Bplot_airbus_basic_cm()%7D%0A%0A%20%20%20%20%7Bplot_airbus_delta_Cm()%7D%0A%0A%20%20%20%20%7Bplot_airbus_delta_Cm_alpha()%7D%0A%0A%20%20%20%20%7Bplot_airbus_net_Cm()%7D%0A%0A%20%20%20%20%7Bplot_airbus_net_Cm_scaling()%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20References%0A%0A%20%20%20%20-%20%5BThe%20Simulation%20of%20a%20Jumbo%20Jet%20Transport%20Aircraft%20-%20Volume%20II%20-%20Modeling%20Data%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19730001300%2Fdownloads%2F19730001300.pdf)%0A%0A%20%20%20%20-%20%5BA%20Civilian%20Aircraft%20Landing%20Challenge%5D(https%3A%2F%2Fw3.onera.fr%2Fsmac%2Fsites%2Fdefault%2Ffiles%2F2024-01%2FCALC_v2.pdf)%0A%0A%20%20%20%20-%20%5BDynamic%20Ground%20Effects%20Flight%20Test%20of%20an%20F-15%20Aircraft%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19950005778%2Fdownloads%2F19950005778.pdf)%0A%0A%20%20%20%20-%20%5BFlight%20Measurements%20of%20Ground%20Effect%20on%20the%20Lift%20and%20Pitching%20Moment%20of%20a%20Large%20Transport%20Aircraft%20(Comet%203B)%20and%20Comparison%20with%20Wind%20Tunnel%20and%20Other%20Data%20%5D(https%3A%2F%2Faerade.cranfield.ac.uk%2Fbitstream%2Fhandle%2F1826.2%2F2880%2Farc-rm-3611.pdf%3Fsequence%3D1)%0A%0A%20%20%20%20-%20%5BGround-Effect%20Analysis%20of%20a%20Jet%20%20Transport%20Airplane%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19850007378%2Fdownloads%2F19850007378.pdf)%0A%0A%20%20%20%20-%20%5BLifting-Line%20Predictions%20for%20Induced%20Drag%20and%20Lift%20in%20Ground%20Effect%5D(https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F269047238_Lifting-Line_Predictions_for_Induced_Drag_and_Lift_in_Ground_Effect)%0A%0A%20%20%20%20-%20%5BCrash%20During%20Experimental%20Test%20Flight%20%0A%20%20%20%20Gulfstream%20Aerospace%20Corporation%20GVI%20(G650)%5D(https%3A%2F%2Fwww.ntsb.gov%2Finvestigations%2FAccidentReports%2FReports%2FAAR1202.pdf)%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Code%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20math%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20return%20math%2C%20mo%2C%20np%2C%20plt%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20Wingspan%20%0A%20%20%20%20b%20%3D%20195.68%0A%0A%20%20%20%20def%20flaps_data_index(flap_setting)%3A%0A%20%20%20%20%20%20%20%20flap_indices%20%3D%20%7B%200%3A%201%2C%201%3A%202%2C%205%3A%203%2C%2010%3A%204%2C%2020%3A%205%2C%2025%3A%206%2C%2030%3A%207%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20flap_indices%5Bflap_setting%5D%20%0A%0A%20%20%20%20def%20flaps_label(flap_setting)%3A%0A%20%20%20%20%20%20%20%20return%20f%22Flaps%20%7Bflap_setting%7D%22%0A%20%20%20%20return%20b%2C%20flaps_data_index%2C%20flaps_label%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20%23%20Data%0A%0A%20%20%20%20jsbsim737_kCLge_data%20%3D%20np.loadtxt('data%2FGroundEffect%2F737kCLge.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20jsbsim737_kCDge_data%20%3D%20np.loadtxt('data%2FGroundEffect%2F737kCDge.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cl_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCL-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20K_B_GE_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FKBGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cl_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CLGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cd_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCD-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20K_A_GE_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FKAGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cd_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CDGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cm_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCM-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cm_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CMGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20%20%20%20%20basic_cd_data%2C%0A%20%20%20%20%20%20%20%20basic_cl_data%2C%0A%20%20%20%20%20%20%20%20basic_cm_data%2C%0A%20%20%20%20%20%20%20%20delta_cd_data%2C%0A%20%20%20%20%20%20%20%20delta_cl_data%2C%0A%20%20%20%20%20%20%20%20delta_cm_data%2C%0A%20%20%20%20%20%20%20%20jsbsim737_kCDge_data%2C%0A%20%20%20%20%20%20%20%20jsbsim737_kCLge_data%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(K_A_GE_data%2C%20K_B_GE_data%2C%20plot_K_GE)%3A%0A%20%20%20%20def%20plot_K_B_GE()%3A%0A%20%20%20%20%20%20%20%20return%20plot_K_GE(K_B_GE_data%2C%20%22%24K%5EB_%7BGE%7D%24%22)%0A%0A%20%20%20%20def%20plot_K_A_GE()%3A%0A%20%20%20%20%20%20%20%20return%20plot_K_GE(K_A_GE_data%2C%20%22%24K%5EA_%7BGE%7D%24%22)%0A%20%20%20%20return%20plot_K_A_GE%2C%20plot_K_B_GE%0A%0A%0A%40app.cell%0Adef%20_(b%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_K_GE(data%2C%20ylabel)%3A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C1%5D%2C%20data%5B%3A%2C0%5D)%0A%20%20%20%20%20%20%20%20ax.set_xlabel(%22Gear%20height%20above%20ground%20(ft)%22)%0A%20%20%20%20%20%20%20%20secax%20%3D%20ax.secondary_xaxis('top'%2C%20functions%3D(lambda%20x%3A%20x%2Fb%2C%20lambda%20x%3A%20b*x))%0A%20%20%20%20%20%20%20%20secax.set_xlabel(%22h%2Fb%22)%0A%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(%22Ground%20Effect%20Height%20Factor%22)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_K_GE%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cl_data%2C%20plot_CL_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CL()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CL_versus_alpha(basic_cl_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_L%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_L%24')%0A%20%20%20%20return%20(plot_basic_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cl_data%2C%20plot_CL_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CL()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CL_versus_alpha(delta_cl_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24')%0A%20%20%20%20return%20(plot_delta_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CL_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cl_data%2C%0A%20%20%20%20delta_cl_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CL_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CL%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CL%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cl%20%3D%20delta_cl_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CL%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cl_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cl_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cl_basic%20%3D%20np.interp(alpha%2C%20basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CL.append((scaled_delta_cl%5Bindex%5D%20%2B%20cl_basic)%2Fcl_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CL.append(scaled_delta_cl%5Bindex%5D%20%2B%20cl_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cl_data%5B%3A%2C0%5D%2C%20CL%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cl_data%2C%0A%20%20%20%20delta_cl_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CL_groundeffect_AOA(flap%2C%20alphas%2C%20title)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_basic%20%3D%20np.interp(alpha%2C%20basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_delta%20%3D%20np.interp(alpha%2C%20delta_cl_data%5B%3A%2C0%5D%2C%20delta_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cl_basic%20%2B%20kge%20*%20cl_delta)%20%2F%20cl_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cd_data%2C%20plot_CD_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CD()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CD_versus_alpha(basic_cd_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_D%24')%0A%20%20%20%20return%20(plot_basic_CD%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cd_data%2C%20plot_CD_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CD()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CD_versus_alpha(delta_cd_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7BD_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7BD_%7BGE%7D%7D%24')%0A%20%20%20%20return%20(plot_delta_CD%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CD_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cd_data%2C%0A%20%20%20%20delta_cd_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CD_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CD%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CD%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_A_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_A_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cd%20%3D%20delta_cd_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CD%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cd_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cd_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cd_basic%20%3D%20np.interp(alpha%2C%20basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CD.append((scaled_delta_cd%5Bindex%5D%20%2B%20cd_basic)%2Fcd_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CD.append(scaled_delta_cd%5Bindex%5D%20%2B%20cd_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cd_data%5B%3A%2C0%5D%2C%20CD%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cd_data%2C%0A%20%20%20%20delta_cd_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CD_groundeffect_AOA(flap%2C%20alphas%2C%20title)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_basic%20%3D%20np.interp(alpha%2C%20basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_delta%20%3D%20np.interp(alpha%2C%20delta_cd_data%5B%3A%2C0%5D%2C%20delta_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_A_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_A_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cd_basic%20%2B%20kge%20*%20cd_delta)%20%2F%20cd_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cm_data%2C%20plot_CM_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CM()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CM_versus_alpha(basic_cm_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_m%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_m%24')%0A%20%20%20%20return%20(plot_basic_CM%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cm_data%2C%20plot_CM_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CM()%3A%0A%20%20%20%20%20%20%20%20return%20plot_CM_versus_alpha(delta_cm_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24')%0A%20%20%20%20return%20(plot_delta_CM%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CM_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cm_data%2C%0A%20%20%20%20delta_cm_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CM_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CM%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CM%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cm%20%3D%20delta_cm_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CM%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cm_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cm_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20np.interp(alpha%2C%20basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CM.append((scaled_delta_cm%5Bindex%5D%20%2B%20cm_basic)%2Fcm_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CM.append(scaled_delta_cm%5Bindex%5D%20%2B%20cm_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cm_data%5B%3A%2C0%5D%2C%20CM%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cm_data%2C%0A%20%20%20%20delta_cm_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CM_groundeffect_AOA(flap%2C%20alphas%2C%20title)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20np.interp(alpha%2C%20basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_delta%20%3D%20np.interp(alpha%2C%20delta_cm_data%5B%3A%2C0%5D%2C%20delta_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cm_basic%20%2B%20kge%20*%20cm_delta)%20%2F%20cm_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_CL()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%0A%0A%20%20%20%20%20%20%20%20hlg%20%3D%20np.linspace(0%2C%2060.3%2C%20100)%0A%20%20%20%20%20%20%20%20hb%20%3D%20hlg%2Fb%0A%0A%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%0A%20%20%20%20%20%20%20%20ax.plot(hb%2C%20delta_cl)%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24%20versus%20%24h%2Fb%24')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_delta_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_plus_delta_ge()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20min_alpha%20%3D%200%0A%20%20%20%20%20%20%20%20max_alpha%20%3D%2014%0A%20%20%20%20%20%20%20%20alphas%20%3D%20%5Bmin_alpha%2C%20max_alpha%5D%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20%5Bcl0%20%2B%20clalpha*min_alpha%2C%20cl0%20%2B%20clalpha*max_alpha%5D%2C%20label%3D'Landing%20Flaps'%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%3D%20%5Bcl0%20%2B%20clalpha*min_alpha%20%2B%20delta_cl%2C%20cl0%20%2B%20clalpha*max_alpha%20%2B%20delta_cl%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cls%2C%20label%3Df'h%2Fb%20%7Bhb%3A.1f%7D')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_L%24')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20vs%20AoA')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_lift_plus_delta_ge%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_scaling()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20min_alpha%20%3D%200%0A%20%20%20%20%20%20%20%20max_alpha%20%3D%2014%0A%20%20%20%20%20%20%20%20alphas%20%3D%20%5Bmin_alpha%2C%20max_alpha%5D%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%3D%20%5B(cl0%20%2B%20clalpha*min_alpha%20%2B%20delta_cl)%2F(cl0%20%2B%20clalpha*min_alpha)%2C%20(cl0%20%2B%20clalpha*max_alpha%20%2B%20delta_cl)%2F(cl0%20%2B%20clalpha*max_alpha)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cls%2C%20label%3Df'h%2Fb%20%7Bhb%3A.1f%7D')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20scaling%20vs%20AoA')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_lift_scaling%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_scaling_vs_hb()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2014.5%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4%2C%2050)%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hbs%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_base%20%3D%20cl0%20%2B%20clalpha*alpha%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_scaling%20%3D%20(delta_cl%20%2B%20cl_base)%20%2F%20cl_base%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20cl_scaling%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%24%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20scaling%20vs%20%24h%2Fb%24')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_lift_scaling_vs_hb%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_basic_cm()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cms)%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_m%24')%0A%20%20%20%20%20%20%20%20plt.title('Basic%20%24C_m%24%20versus%20%24%5C%5Calpha%24')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_basic_cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_Cm()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%0A%0A%20%20%20%20%20%20%20%20hlg%20%3D%20np.linspace(0%2C%2060.3%2F2%2C%20100)%0A%20%20%20%20%20%20%20%20hb%20%3D%20hlg%2Fb%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2015%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_rad%20%3D%20math.radians(alpha)%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cm%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alpha_rad)%20*%20np.exp(-lambda_m%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hb%2C%20delta_cm%2C%20label%3Df'%24%5C%5Calpha%24%20%3D%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20%24h%2Fb%24')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_delta_Cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_Cm_alpha()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2028)%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%20%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cms%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20delta_cms%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20AoA')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_delta_Cm_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_net_Cm()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cms%2C%20label%3D'Landing%20flaps')%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2020)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_nets%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%20%2B%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cm_nets%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_m%24')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20versus%20AoA')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_net_Cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_net_Cm_scaling()%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2020)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_nets%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%20%2B%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_net_scaling%20%3D%20cm_nets%20%2F%20cm_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cm_net_scaling%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20scaling%20versus%20AoA')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%0A%20%20%20%20return%20(plot_airbus_net_Cm_scaling%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_generic_xy(x%2C%20y%2C%20title%2C%20xlabel%2C%20ylabel)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%0A%20%20%20%20%20%20%20%20ax.plot(x%2C%20y)%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_xlabel(xlabel)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_generic_xy%2C)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
7da5009c293b5fb4b6bb572fa3b6ece398fd17d43b797893efedc2f6aa832fc0